package com.utn.disenio.entrega2;

import static org.junit.Assert.*;

import java.util.ArrayList;

import org.junit.Test;
import org.junit.Before;
import com.lanchita.excepciones.EstadoErroneoException;



public class AerolineasTester {

	UsuarioEstandar gabriel;
	UsuarioEstandar mariano;
	UsuarioEstandar bruno;
	UsuarioNoPaga pablo;
	UsuarioNoPaga naomi;
	UsuarioNoPaga julian;
	SistemaAterrizarPuntoCom sistema;
	AerolineaLanchitaAdapter lanchitaAdapter = new AerolineaLanchitaAdapter(); 
	ArrayList<Aerolineas> aerolineas;

	
	@Before
	public void inicializarTest(){
		
		sistema = SistemaAterrizarPuntoCom.getInstance();
		
		mariano = new UsuarioEstandar("Mariano","German","33.333.333");
		gabriel = new UsuarioEstandar("Gabriel","Pan Gantes","44.444.444");
		bruno = new UsuarioEstandar("Bruno","Fischetti","55.555.555");
		pablo = new UsuarioNoPaga("Pablo","Marbian","66.666.666");
		naomi = new UsuarioNoPaga("Naomi","Pasarelli","77.777.777");
		julian = new UsuarioNoPaga("Julius","Larralde","88.888.888");
		
		mariano.registrarCompra((float)120000); /* Mariano es VIP */
		
		
	}
	
	
	@Test
	public void marianoEsVip(){
		assertEquals(mariano.getNivel().getClass(), NivelVip.class);
	}
	
	@Test
	public void cuandoCompraMuchoEsVip() throws Exception{
		assertEquals(gabriel.getNivel().getClass() , NivelNormal.class);
		
		ArrayList<Asiento> asientos = new ArrayList<Asiento>();
		asientos.addAll(lanchitaAdapter.buscarAsientos(null, null, null , null, null, null, gabriel));

		for(Asiento asiento: asientos)
		{
			gabriel.comprarAsiento(asiento);
		}
	
		assertEquals(gabriel.getNivel().getClass(), NivelNormal.class); //No llega a 100.000 los gastos comprados  en asientos
		
	}
	
	@Test(expected = EstadoErroneoException.class)
	public void comprarDosVecesElMismo() throws Exception{

		ArrayList<Asiento> asientos = new ArrayList<Asiento>();
		asientos.addAll(lanchitaAdapter.buscarAsientos(null, null, null , null, null, null, mariano));
		
		mariano.comprarAsiento(asientos.get(1));
		gabriel.comprarAsiento(asientos.get(1));
	}
	
	@Test
	public void aumentanSusComprasTotales() throws Exception{
		
		float gastosAnteriores = mariano.getGastosAcumulados();
		
		ArrayList<Asiento> asientos = new ArrayList<Asiento>();
		asientos.addAll(lanchitaAdapter.buscarAsientos(null, null, null , null, null, null, mariano));

		for(Asiento asiento: asientos)
		{
			mariano.comprarAsiento(asiento);
		}
		
		float gastosActuales = mariano.getGastosAcumulados();
		
		assertTrue(gastosAnteriores < gastosActuales);
	
	}
	
	
	

	
	
	
	
	
	
}
